// Package database 提供数据库连接和操作功能
// 该包使用GORM库来简化数据库操作
package database

import (
	"log"

	"gorm.io/driver/postgres"
	"gorm.io/gorm"
)

// Connect 建立到PostgreSQL数据库的连接
// 参数:
//
//	dsn - 数据库连接字符串
//
// 返回值:
//
//	*gorm.DB - GORM数据库实例
//	error - 连接错误信息
func Connect(dsn string) (*gorm.DB, error) {
	// 尝试连接PostgreSQL数据库
	db, err := gorm.Open(postgres.Open(dsn), &gorm.Config{})
	if err != nil {
		log.Printf("Failed to connect to PostgreSQL: %v", err)
		log.Println("For testing purposes, the server will start with limited functionality. Please ensure PostgreSQL is running and connection details are correct.")
		return nil, nil
	}

	// 自动迁移数据库表结构
	// 注意：在生产环境中，建议使用专门的迁移工具
	// 这里为了简化示例，使用GORM的AutoMigrate功能
	/*
		err = db.AutoMigrate(
			&models.User{},
			&models.TaskGroup{},
			&models.Task{},
			&models.TaskLog{},
		)
		if err != nil {
			log.Printf("Failed to auto migrate database tables: %v", err)
			return nil, err
		}
	*/

	return db, nil
}
